package com.gqz.equip.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gqz.common.core.domain.RequestForm;
import com.gqz.equip.app.entity.EnStockTaskEntity;
import com.gqz.equip.vo.*;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;


/**
 * 能源-盘点任务
 *
 * @Version 1.0
 * @Author input you name
 */
public interface ITEnStockTaskService extends IService<EnStockTaskEntity> {

    /**
     * 通过id 获取 信息能源-盘点任务
     *
     * @param id 设备主键
     * @return 能源-盘点任务
     */
    List<EnStockTaskVo> getById(String id);

    List<EnStockTaskVo> getByTaskNo(String taskNo);

    /**
     * 分页 获取 信息 能源-盘点任务
     *
     * @param requestForm 查询体body
     * @return page 能源-盘点任务
     */
    Page<EnStockTaskVo> page(RequestForm<EnStockTaskVo> requestForm);

    /**
     * 分页 获取 数量能源-盘点任务
     *
     * @param requestForm 查询体body
     * @return page 能源-盘点任务
     */
    Long count(RequestForm<EnStockTaskVo> requestForm);

    /**
     * 新增记录
     *
     * @param vos 记录数据
     * @return 影响的条数num
     */
    int insert(List<EnStockTaskVo> vos);

    /**
     * 修改记录
     *
     * @param vos 记录数据
     * @return 影响的条数num
     */
    int update(List<EnStockTaskVo> vos);

    /**
     * 根据任务编码获取设备列表
     *
     * @param taskNo 任务编码
     * @return
     */
    List<EnStockTaskEquipVo> getTaskEquipList(String taskNo);

    /**
     * 弹窗获取设备列表
     *
     * @param requestForm
     * @return
     */
    Page<TEnStockEquipVo> getEquipPage(RequestForm<TEnWzEquipVo> requestForm);

    /**
     * 根据任务编码获取操作流程
     *
     * @param taskNo 任务编码
     * @return
     */
    TEnStockTaskProcessVo getTaskProcess(String taskNo);

    /**
     * 工单分页
     *
     * @param requestForm
     * @return
     */
    Page<EnStockTaskVo> getOrderPage(RequestForm<EnStockTaskVo> requestForm);

    /**
     * 详情列表分页
     *
     * @param requestForm
     * @return
     */
    IPage<EnStockTaskDetailVo> getTaskDetailPage(RequestForm<EnStockTaskDetailVo> requestForm);

    /**
     * 派单
     *
     * @param vo vo
     * @return
     */
    int sendOrder(EnStockTaskVo vo);

    /**
     * 盘点任务操作记录保存
     *
     * @param taskVo        taskVo
     * @param optStatus     optStatus
     * @param optStatusName optStatusName
     */
    void saveTaskOperate(EnStockTaskVo taskVo, String optStatus, String optStatusName);

    /**
     * 根据任务编码获取缺陷隐患列表
     *
     * @param taskNo 任务编码
     * @return
     */
    List<EnStockEquipDefectVo> getTaskDefectList(String taskNo);

    /**
     * 获取工单编号
     *
     * @return
     */
    String getTaskNo();

    /**
     * 盘点设备统计
     *
     * @param taskNo 任务编码
     * @return
     */
    List<StockEquipStatisticsVo> getEquipStatisticsByTaskNo(String taskNo);

    /**
     * 分页查询设备列表根据任务编号
     *
     * @param requestForm
     * @return
     */
    Page<EnStockTaskEquipVo> getTaskEquipListPage(RequestForm<StockEquipStatisticsVo> requestForm);

    /**
     * 盘点任务-详情导出
     *
     * @param requestForm
     * @Description: 导出excel
     * @return: void
     */
    void exportExcel(HttpServletResponse response, RequestForm<EnStockTaskDetailVo> requestForm);

}
